let path = require('path')
let html = require('html-webpack-plugin')
let { CleanWebpackPlugin } = require('clean-webpack-plugin')
let webpack = require('webpack')
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {

  entry: "./src/index.js",
  output: {
    filename: "index.[contenthash:8].js",
    path: path.resolve(__dirname, '../app'),
    assetModuleFilename: 'imgs/[name][ext]'
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: 'index.css'
    }),
    new CleanWebpackPlugin(),
    new html({
      template: "./public/index.html"
    }),
    new webpack.DefinePlugin({
      base: "'httpd://baidu.com'"
    })
  ],
  module: {
    // loader的加载顺序是从右向左的  从下往上的
    rules: [
      {
        test: /\.js$/,
        use: 'babel-loader',
        exclude: /node_modules/ // 告诉webpac不用处理 node_modules中的js
      },
      // {
      //   test: /\.(jpg|jpeg|png|webp)$/i,
      //   use: {
      //     loader: 'url-loader',
      //     options: {
      //       limit: 20 * 1024, // 图片大侠若不超过20kb;那么就转成base64编码
      //       name: "./imgs/[name].[ext]"
      //     }
      //   }
      // },
      {
        test: /\.(jpg|jpeg|png|webp)$/i,
        type: 'asset/resource'
      },
      {
        // 单反碰见 css后缀的文件 都会使用css-loader去翻译这个文件
        test: /\.css$/i,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader', 'postcss-loader']
      },
      {
        test: /\.less$/i,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader', 'postcss-loader']
      }
      // {
      //   test: /\.css$/i,
      //   use: {
      //     loader: 'css-loader',
      //     options: {
      //       url: true,
      //     }
      //   }
      // }
      // {
      //   // 单反碰见 css后缀的文件 都会使用css-loader去翻译这个文件
      //   test: /\.css$/i,
      //   use: 'css-loader'
      // }
    ]
  }
}